home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Developer CD Series 1992 June: ROMin Holiday
/
ADC Developer CD (1992-06) (''ROMin Holiday'')_iso
/
Developer Connection - 06-1992.iso
/
Periodicals
/
develop
/
develop 5 code
/
Scanning from ProDOS
/
Dev.Sample.aii.lst
< prev
next >
Encoding:
Amiga (detected)
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
File List
|
1990-11-06
|
58.9 KB
|
1,126 lines
|
[
TEXT/MPS
]
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 1
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
;*******************************************************
;
; Develop Code Samples.
;
; Written by Matt Gulick. Started October 16,1990
;
;*******************************************************
;*******************************************************
;
; This file contains the code samples that are used in
; the Scanning From ProDOS article in DEVELOP. These
; code segments may be used freely by anyone. All
; code in this file assumes that we are running in an
; 8 bit Apple IIe.
;
;*******************************************************
;*******************************************************
;
; Revision History:
;
;*******************************************************
; Oct 16, 1990 File started.
;
STRING PASCAL
BLANKS OFF
PAGESIZE 70
PRINT NOGEN
PRINT NOMDIR
MACHINE M65C02
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 2
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
;*******************************************************
;
; CODE SAMPLE #1
;
; This first code segment walks the slots starting at
; slot 7, looking first for a card of any kind. Once
; found, we check the ID bytes for a Smartport card.
; Once found we check the ID Type byte to see if it is
; a SCSI Card. If it passes all these tests, we then
; issue a Device $00 Status $00 call to further ensure
; that this is the Apple High-Speed SCSI Card.
;
;*******************************************************
;
; The following are Equates
; that will bee used in all
; the Sample Code Segments
; that follow.
;
0000 00C7 slot_7 equ $C7
0000 00C1 slot_1 equ $C1
0000 0042 My_ZPage equ $42
0000 C000 KBD equ $C000 ;Keyboard
0000 C00C CLR80VID equ $C00C ;Disable 80-column hardware
0000 C00D SET80VID equ $C00D ;Enable 80-column hardware
0000 C010 KBD_STRB equ $C010 ;Keyboard Strobe
0000 C018 RD80COL equ $C018 ;Read 80 Col. Mode
0000 C01A RDTEXT equ $C01A ;Read Text Mode
0000 C01B RDMIX equ $C01B ;Read Mix Mode
0000 C01C RDPAGE2 equ $C01C ;Read Page 2 setting
0000 C01D RDHIRES equ $C01D ;Read HiRes setting
0000 C050 TXTCLR equ $C050 ;Clear Text Mode
0000 C051 TXTSET equ $C051 ;Set Text Mode
0000 C052 MIXCLR equ $C052 ;Clear Mixed Mode
0000 C053 MIXSET equ $C053 ;Set Mixed Mode
0000 C054 TXTPAGE1 equ $C054 ;Set Text Page 1
0000 C055 TXTPAGE2 equ $C055 ;Set Text page 2
0000 C056 LORES equ $C056 ;Set LoRes Graphics
0000 C057 HIRES equ $C057 ;Set HiRes Graphics
0000 C05E CLRAN3 equ $C05E ;Clear annunciator 3
0000 C05F SETAN3 equ $C05F ;Set annunciator 3
0000 009B ESC equ $9B ;High bit set ASCII ESC Key
0000 0001 Blk_sig1 equ $01
0000 0003 Blk_sig2 equ $03
0000 0005 Blk_sig3 equ $05
0000 0007 SPort_sig equ $07
0000 00FB SPort_ID equ $FB
0000 0080 Ext_SPort equ %10000000 ;Bit 7
0000 0002 SCSI equ %00000010 ;Bit 2
0000 0000 No_Err equ $00
0000 0027 IO_Err equ $27
0000 0028 No_dev equ $28
;*******************************************************
EXPORT P8_Scanner
00000 0000 P8_Scanner PROC
00000 0000 ;
00000 0000 ; Main Code Segment.
00000 0000 ;
00000 0000
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 3
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00000 0000 20 FFFF 00018 6 jsr find_card
00003 0003 20 FFFF 000FA 6 jsr find_scanr
00006 0006 20 FFFF 0018E 6 jsr htone_filter
00009 0009 20 FFFF 001F5 6 jsr def_window
0000C 000C 20 FFFF 0027B 6 jsr start_scan
0000F 000F 20 FFFF 002CE 6 jsr get_data
00012 0012 20 FFFF 005C3 6 jsr display
00015 0015 90 E9 00000 2 bcc P8_Scanner
00017 0017 60 6 rts
00018 0018
00018 0018 ;*******************************************************
00018 0018 ;
00018 0018 ; CODE SAMPLE #1
00018 0018 ;
00018 0018 ; This first code segment walks the slots starting at
00018 0018 ; slot 7, looking first for a card of any kind. Once
00018 0018 ; found, we check the ID bytes for a Smartport card.
00018 0018 ; Once found we check the ID Type byte to see if it is
00018 0018 ; a SCSI Card. If it passes all these tests, we then
00018 0018 ; issue a Device $00 Status $00 call to further ensure
00018 0018 ; that this is the Apple High-Speed SCSI Card.
00018 0018 ;
00018 0018 ;*******************************************************
00018 0018
00018 0018 find_card
00018 0018 ;
00018 0018 ; Save the current Zero
00018 0018 ; Page values before
00018 0018 ; using them.
00018 0018 ;
00018 0018 A5 42 3 lda <My_ZPage
0001A 001A 48 3 pha
0001B 001B A5 43 3 lda <My_ZPage+1
0001D 001D 48 3 pha
0001E 001E ;
0001E 001E ; Start at Slot 7.
0001E 001E ;
0001E 001E A9 C7 2 lda #slot_7
00020 0020 85 43 3 sta <My_ZPage+1 ;Zero Page
00022 0022 8D FFFF 000AF 4 sta slot+1 ;For Safe keeping
00025 0025 64 42 3 stz <My_ZPage
00027 0027 9C FFFF 000AE 4 stz slot
0002A 002A ;
0002A 002A ; Is it a Smartport Card?
0002A 002A ;
0002A 002A A0 01 2 @chk_smart ldy #Blk_sig1
0002C 002C B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
0002E 002E C9 20 2 cmp #$20 ;#1 = $20
00030 0030 D0 23 00055 2 bne @next_slot
00032 0032
00032 0032 A0 03 2 ldy #Blk_sig2
00034 0034 B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
00036 0036 D0 1D 00055 2 bne @next_slot ;#2 = $00
00038 0038
00038 0038 A0 05 2 ldy #Blk_sig3
0003A 003A B1 42 5 lda (My_ZPage),y;Block_device Signature Byte
0003C 003C C9 03 2 cmp #$03 ;#3 = $03
0003E 003E D0 15 00055 2 bne @next_slot
00040 0040
00040 0040 A0 07 2 ldy #SPort_sig
00042 0042 B1 42 5 lda (My_ZPage),y;SmartPort Signature Byte
00044 0044 D0 0F 00055 2 bne @next_slot ;#1 = $00
00046 0046 ;
00046 0046 ; We have a Smartport
00046 0046 ; Device. Is it SCSI with
00046 0046 ; Extended SmartPort?
00046 0046 ;
00046 0046 A0 FB 2 ldy #SPort_ID
00048 0048 B1 42 5 lda (My_ZPage),y
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 4
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0004A 004A 29 82 2 and #Ext_SPort+\
SCSI
0004C 004C C9 82 2 cmp #Ext_SPort+\
SCSI
0004E 004E D0 05 00055 2 bne @next_slot
00050 0050 ;
00050 0050 ; Is it an Apple High-
00050 0050 ; Speed SCSI Card?
00050 0050 ;
00050 0050 20 FFFF 0006E 6 jsr is_it_appl
00053 0053 90 0E 00063 2 bcc @exit
00055 0055 ;
00055 0055 ; Check the Next Slot.
00055 0055 ;
00055 0055 A5 43 3 @next_slot lda <My_ZPage+1
00057 0057 3A 2 dec a
00058 0058 85 43 3 sta <My_ZPage+1
0005A 005A 8D FFFF 000AF 4 sta slot+1
0005D 005D C9 C1 2 cmp #slot_1
0005F 005F B0 C9 0002A 2 bge @chk_smart
00061 0061 A9 28 2 lda #No_dev ;No Device Error
00063 0063 ;
00063 0063 ; Clean Exit
00063 0063 ;
00063 0063 AA 2 @exit tax
00064 0064 68 4 pla
00065 0065 85 43 3 sta <My_ZPage+1
00067 0067 68 4 pla
00068 0068 85 42 3 sta <My_ZPage
0006A 006A 8A 2 txa
0006B 006B
0006B 006B C9 01 2 cmp #$01 ;Set Carry if Non-Zero
0006D 006D 60 6 rts
0006E 006E ;
0006E 006E ; This routine determines
0006E 006E ; if the card is the new
0006E 006E ; High-Speed SCSI Card.
0006E 006E ;
0006E 006E A0 FF 2 is_it_appl ldy #$ff
00070 0070 B1 42 5 lda (My_ZPage),y
00072 0072 18 2 clc
00073 0073 69 03 2 adc #$03 ;Set Smartport Entry Address
00075 0075 8D FFFF 000B3 4 sta card_ntry
00078 0078
00078 0078 A5 43 3 lda <My_ZPage+1
0007A 007A 8D FFFF 000B4 4 sta card_ntry+1
0007D 007D
0007D 007D 20 FFFF 000B0 6 jsr call_card
00080 0080 00 dc.b $00 ;Status Call Command Number
00081 0081 00B5 dc.w stat_list1
00083 0083 ;
00083 0083 ; Check the Results
00083 0083 ;
00083 0083 AD FFFF 000BC 4 lda stat_data+2 ;Low Byte of Vendor ID
00086 0086 C9 01 2 cmp #$01 ;Must be $01
00088 0088 D0 12 0009C 2 bne @non_apple
0008A 008A
0008A 008A AD FFFF 000BD 4 lda stat_data+3 ;High Byte of Vendor ID
0008D 008D D0 0D 0009C 2 bne @non_apple ;Must be $00
0008F 008F
0008F 008F AD FFFF 000BE 4 lda stat_data+4 ;Low Byte of Version
00092 0092 D0 08 0009C 2 bne @non_apple ;Should be Null
00094 0094
00094 0094 AD FFFF 000BF 4 lda stat_data+5 ;High Byte of Version
00097 0097 D0 03 0009C 2 bne @non_apple ;Should be Null
00099 0099
00099 0099 18 2 clc ;Acc. 0 by previous LDA
0009A 009A 80 03 0009F 3 bra @done
0009C 009C
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 5
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0009C 009C A9 28 2 @non_apple lda #No_dev ;Device not found.
0009E 009E 38 2 sec
0009F 009F ;
0009F 009F ; Restore ZPage
0009F 009F ;
0009F 009F 48 3 @done pha
000A0 00A0 08 3 php
000A1 00A1 AD FFFF 000AE 4 lda slot
000A4 00A4 85 42 3 sta <My_ZPage
000A6 00A6 AD FFFF 000AF 4 lda slot+1
000A9 00A9 85 43 3 sta <My_ZPage+1
000AB 00AB 28 4 plp
000AC 00AC 68 4 pla
000AD 00AD 60 6 rts
000AE 00AE
000AE 00AE 0000 slot dc.w $0000
000B0 00B0
000B0 00B0 ;*******************************************************
000B0 00B0
000B0 00B0 6C FFFF 5 call_card jmp (card_ntry)
000B3 00B3
000B3 00B3 0000 card_ntry dc.w $0000
000B5 00B5
000B5 00B5 ;*******************************************************
000B5 00B5
000B5 00B5 03 stat_list1 dc.b $03 ;PCount = 3
000B6 00B6 00 dc.b $00 ;Device = Card
000B7 00B7 00BA dc.w stat_data ;Data returned here
000B9 00B9 00 dc.b $00 ;Get Host Status Call
000BA 00BA
000BA 00BA ;*******************************************************
000BA 00BA
000BA 00BA 000000000000 stat_data dcb.b 64,0 ;Our Buffer.
000FA 00FA
000FA 00FA ;*******************************************************
000FA 00FA ;
000FA 00FA ; CODE SAMPLE #2
000FA 00FA ;
000FA 00FA ; This code segment walks the unit numbers from the
000FA 00FA ; SCSI Card starting at unit 2 and going to unit 0 to
000FA 00FA ; get the actual unit number count. Once this is
000FA 00FA ; done, we start at unit 1 and walk forward until we
000FA 00FA ; find the scanner.
000FA 00FA ;
000FA 00FA ;*******************************************************
000FA 00FA
000FA 00FA find_scanr
000FA 00FA ;
000FA 00FA ; First we issue a
000FA 00FA ; Status call to device
000FA 00FA ; number 2. This will
000FA 00FA ; force the card to
000FA 00FA ; build its tables if it
000FA 00FA ; has not yet done so.
000FA 00FA ;
000FA 00FA A9 02 2 lda #$02
000FC 00FC 8D FFFF 00171 4 sta dev_num2
000FF 00FF 9C FFFF 00174 4 stz stat_code2
00102 0102
00102 0102 20 00B0 000B0 6 jsr call_card
00105 0105 00 dc.b $00
00106 0106 0170 dc.w stat_list2
00108 0108 B0 4F 00159 2 bcs @error
0010A 010A ;
0010A 010A ; Now call Unit 0 to
0010A 010A ; find out the total
0010A 010A ; device count.
0010A 010A ;
0010A 010A 9C FFFF 00171 4 stz dev_num2
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 6
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0010D 010D 20 00B0 000B0 6 jsr call_card
00110 0110 00 dc.b $00 ;Status Call Command Number
00111 0111 0170 dc.w stat_list2
00113 0113 B0 44 00159 2 bcs @error
00115 0115
00115 0115 AD FFFF 00175 4 lda stat_data2 ;Get the Total Device
00118 0118 8D FFFF 0016E 4 sta dev_count ;Count
0011B 011B
0011B 011B A9 03 2 lda #$03 ;Set up for DIB Status
0011D 011D 8D FFFF 00174 4 sta stat_code2 ;Calls
00120 0120
00120 0120 AD FFFF 00171 4 @loop lda dev_num2 ;First time we increment
00123 0123 CD FFFF 0016E 4 cmp dev_count ;a zero giving a device
00126 0126 B0 31 00159 2 bge @error ;number of 1.
00128 0128
00128 0128 EE FFFF 00171 6 inc dev_num2
0012B 012B 20 00B0 000B0 6 jsr call_card
0012E 012E 00 dc.b $00 ;Status Call Command Number
0012F 012F 0170 dc.w stat_list2
00131 0131 B0 26 00159 2 bcs @error
00133 0133
00133 0133 AD FFFF 0018A 4 lda d_type
00136 0136 C9 08 2 cmp #$08 ;Is it Type = Scanner?
00138 0138 D0 E6 00120 2 bne @loop ;No.
0013A 013A
0013A 013A AD FFFF 0018B 4 lda d_stype
0013D 013D C9 A0 2 cmp #$A0 ;Subtype = $A0?
0013F 013F D0 DF 00120 2 bne @loop ;No
00141 0141 ;
00141 0141 ; Scan string is a Pascal
00141 0141 ; String. A length byte
00141 0141 ; followed by ASCII. We
00141 0141 ; want to make sure they
00141 0141 ; are both the same length
00141 0141 ; as well as the same text.
00141 0141 ;
00141 0141 AE FFFF 00179 4 ldx id_str_len
00144 0144 BD FFFF 4 @str_loop lda id_str_len,x
00147 0147 DD FFFF 4 cmp scan_str,x
0014A 014A D0 D4 00120 2 bne @loop
0014C 014C CA 2 dex
0014D 014D D0 F5 00144 2 bne @str_loop
0014F 014F
0014F 014F AD FFFF 00171 4 lda dev_num2 ;We have our Scanner
00152 0152 8D FFFF 0016F 4 sta scan_dnum
00155 0155 A9 00 2 lda #No_Err
00157 0157 18 2 clc
00158 0158 60 6 rts
00159 0159
00159 0159 A9 28 2 @error lda #No_dev ;Device not found.
0015B 015B 38 2 sec
0015C 015C 60 6 rts
0015D 015D
0015D 015D ;*******************************************************
0015D 015D
0015D 015D 104150504C45 scan_str dc.b 'APPLE SCANNER ' ;4 Spaces between
0016E 016E ;1 Sace after
0016E 016E 00 dev_count dc.b $00
0016F 016F
0016F 016F ;*******************************************************
0016F 016F
0016F 016F 00 scan_dnum dc.b $00 ;Scanner Device Number
00170 0170
00170 0170 ;*******************************************************
00170 0170
00170 0170 03 stat_list2 dc.b $03 ;PCount = 3
00171 0171 00 dev_num2 dc.b $00 ;Device number
00172 0172 0175 dc.w stat_data2 ;Data returned here
00174 0174 00 stat_code2 dc.b $00 ;Status Code
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 7
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00175 0175
00175 0175 ;*******************************************************
00175 0175
00175 0175 stat_data2 ;Our Buffer. Used over.
00175 0175 00 d_stat dc.b $00 ;Device Status Byte
00176 0176 00 blk_low dc.b $00 ;Block Count (Low)
00177 0177 00 blk_mid dc.b $00 ;Block Count (Mid)
00178 0178 00 blk_hi dc.b $00 ;Block Count (High)
00179 0179 00 id_str_len dc.b $00 ;ID String Length
0017A 017A 000000000000 id_str dcb.b 16,$00 ;ID STring (16 Bytes)
0018A 018A 00 d_type dc.b $00 ;Device Type
0018B 018B 00 d_stype dc.b $00 ;Device Subtype
0018C 018C 0000 d_version dc.w $00 ;Version Word
0018E 018E
0018E 018E ;*******************************************************
0018E 018E ;
0018E 018E ; CODE SAMPLE #3
0018E 018E ;
0018E 018E ; This code segment issues an Apple Scanner SEND
0018E 018E ; Command by using the Apple SCSI Card Generic SCSI
0018E 018E ; call ($2B). By so doing we can send our halftone
0018E 018E ; filter to the Scanner.
0018E 018E ;
0018E 018E ;*******************************************************
0018E 018E
0018E 018E htone_filter
0018E 018E ;
0018E 018E ; Issue the Call
0018E 018E ;
0018E 018E AD 016F 0016F 4 lda scan_dnum
00191 0191 8D FFFF 0019C 4 sta dev_num3
00194 0194
00194 0194 20 00B0 000B0 6 jsr call_card
00197 0197 04 dc.b $04 ;Control Call Command Number
00198 0198 019B dc.w cmd_list3
0019A 019A 60 6 rts
0019B 019B
0019B 019B ;*******************************************************
0019B 019B
0019B 019B 03 cmd_list3 dc.b $03 ;PCount = 3
0019C 019C 04 dev_num3 dc.b $04 ;Device number
0019D 019D 01A0 dc.w filter_data ;Pointer to data
0019F 019F 2B dc.b $2B ;Control Code
001A0 01A0
001A0 01A0 ;*******************************************************
001A0 01A0
001A0 01A0 filter_data ;Our Data
001A0 01A0 0018 dc.w 24 ;Total Length of Parms
001A2 01A2 000001BA dc.l send_fltr ;CDB Pointer (Long)
001A6 01A6 000001C4 dc.l DCData3 ;DCMove Ptr (Long)
001AA 01AA 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
001AE 01AE 00 dc.b $00 ;Reserved
001AF 01AF 00 dc.b $00 ;SCSI Status
001B0 01B0 00 dc.b $00 ;Command Count
001B1 01B1 00000011 dc.l $00000011 ;Trans Count (Long)
001B5 01B5 00 dc.b $00 ;DMA Mode
001B6 01B6 00000000 dc.l $00000000 ;Reserved (Long)
001BA 01BA
001BA 01BA ;*******************************************************
001BA 01BA
001BA 01BA 2A send_fltr dc.b $2A ;Scanner SEND Command
001BB 01BB 00 dc.b $00 ;Reserved
001BC 01BC 02 dc.b $02 ;Transfer Type
001BD 01BD 00 dc.b $00 ;Reserved
001BE 01BE 00 dc.b $00 ;Reserved
001BF 01BF 02 dc.b $02 ;Transfer ID Byte
001C0 01C0 00 dc.b $00 ;Reserved
001C1 01C1 00 dc.b $00 ;Transfer Length (High)
001C2 01C2 11 dc.b $11 ;Transfer Length (Low)
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 8
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
001C3 01C3 00 dc.b $00 ;Reserved
001C4 01C4
001C4 01C4 ;*******************************************************
001C4 01C4
001C4 01C4 000001E4 DCData3 dc.l send_data ;Scanner SEND Data Ptr
001C8 01C8 00000011 dc.l $00000011 ;Transfer Count
001CC 01CC 00000000 dc.l $00000000 ;Offset
001D0 01D0 00000000 dc.l $00000000 ;Reserved
001D4 01D4
001D4 01D4 00000000 dc.l $00000000 ;DCStop
001D8 01D8 00000000 dc.l $00000000 ;Reserved
001DC 01DC 00000000 dc.l $00000000 ;Reserved
001E0 01E0 00000000 dc.l $00000000 ;Reserved
001E4 01E4
001E4 01E4 ;*******************************************************
001E4 01E4
001E4 01E4 44 send_data dc.b $44 ;4 X 4 Matrix Size
001E5 01E5 08 dc.b $08 ;Pel 0
001E6 01E6 88 dc.b $88 ;Pel 1
001E7 01E7 28 dc.b $28 ;Pel 2
001E8 01E8 A8 dc.b $A8 ;Pel 3
001E9 01E9 C8 dc.b $C8 ;Pel 4
001EA 01EA 48 dc.b $48 ;Pel 5
001EB 01EB E8 dc.b $E8 ;Pel 6
001EC 01EC 68 dc.b $68 ;Pel 7
001ED 01ED 38 dc.b $38 ;Pel 8
001EE 01EE B8 dc.b $B8 ;Pel 9
001EF 01EF 18 dc.b $18 ;Pel 10
001F0 01F0 98 dc.b $98 ;Pel 11
001F1 01F1 F8 dc.b $F8 ;Pel 12
001F2 01F2 78 dc.b $78 ;Pel 13
001F3 01F3 D8 dc.b $D8 ;Pel 14
001F4 01F4 58 dc.b $58 ;Pel 15
001F5 01F5
001F5 01F5 ;*******************************************************
001F5 01F5 ;
001F5 01F5 ; CODE SAMPLE #4
001F5 01F5 ;
001F5 01F5 ; This code segment issues an Apple Scanner Define
001F5 01F5 ; Window Parameters Command by using the Apple SCSI
001F5 01F5 ; Card Generic SCSI call ($2B). This command defines
001F5 01F5 ; the area of the scanner glass we want to scan
001F5 01F5 ;
001F5 01F5 ;*******************************************************
001F5 01F5
001F5 01F5 def_window
001F5 01F5 ;
001F5 01F5 ; Issue the Call
001F5 01F5 ;
001F5 01F5 AD 016F 0016F 4 lda scan_dnum
001F8 01F8 8D FFFF 00203 4 sta dev_num4
001FB 01FB
001FB 01FB 20 00B0 000B0 6 jsr call_card
001FE 01FE 04 dc.b $04 ;Control Call Command Number
001FF 01FF 0202 dc.w cmd_list4
00201 0201 60 6 rts
00202 0202
00202 0202 ;*******************************************************
00202 0202
00202 0202 03 cmd_list4 dc.b $03 ;PCount = 3
00203 0203 00 dev_num4 dc.b $00 ;Device number
00204 0204 0207 dc.w def_wndo ;Pointer to data
00206 0206 2B dc.b $2B ;Control Code
00207 0207
00207 0207 ;*******************************************************
00207 0207
00207 0207 def_wndo ;Our Data
00207 0207 0018 dc.w 24 ;Total Length of Parms
00209 0209 00000221 dc.l def_wnd_cmd ;CDB Pointer (Long)
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 9
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0020D 020D 0000022B dc.l DCData4 ;DCMove Ptr (Long)
00211 0211 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
00215 0215 00 dc.b $00 ;Reserved
00216 0216 00 dc.b $00 ;SCSI Status
00217 0217 00 dc.b $00 ;Command Count
00218 0218 00000030 dc.l 8+40 ;Trans Count (Long)
0021C 021C 00 dc.b $00 ;DMA Mode
0021D 021D 00000000 dc.l $00000000 ;Reserved (Long)
00221 0221
00221 0221 ;*******************************************************
00221 0221
00221 0221 24 def_wnd_cmd dc.b $24 ;Scanner Define Window
00222 0222 ;Parameters Command
00222 0222 00 dc.b $00 ;Reserved
00223 0223 00 dc.b $00 ;Reserved
00224 0224 00 dc.b $00 ;Reserved
00225 0225 00 dc.b $00 ;Reserved
00226 0226 00 dc.b $00 ;Reserved
00227 0227 00 dc.b $00 ;Transfer Length (High)
00228 0228 00 dc.b $00 ;Transfer Length (Mid)
00229 0229 30 dc.b 8+40 ;Transfer Length (Low)
0022A 022A 80 dc.b $80 ;Apple Bit
0022B 022B
0022B 022B ;*******************************************************
0022B 022B
0022B 022B 0000024B DCData4 dc.l wndo_data ;Scanner Window Data Ptr
0022F 022F 00000030 dc.l 8+40 ;Transfer Count
00233 0233 00000000 dc.l $00000000 ;Offset
00237 0237 00000000 dc.l $00000000 ;Reserved
0023B 023B
0023B 023B 00000000 dc.l $00000000 ;DCStop
0023F 023F 00000000 dc.l $00000000 ;Reserved
00243 0243 00000000 dc.l $00000000 ;Reserved
00247 0247 00000000 dc.l $00000000 ;Reserved
0024B 024B
0024B 024B ;*******************************************************
0024B 024B ; NOTE: Remember that all values that are longer than
0024B 024B ; 1 byte are in reversed order from natice 65xxx code.
0024B 024B ;*******************************************************
0024B 024B
0024B 024B 000000000000 wndo_data dcb.b 6,$00 ;Reserved
00251 0251 00 dc.b $00 ;Transfer Length (High)
00252 0252 28 dc.b 40 ;Transfer Length (Low)
00253 0253
00253 0253 01 dc.b $01 ;Window Identifier
00254 0254 00 dc.b $00 ;Reserved
00255 0255
00255 0255 00 dc.b $00 ;X Resolution (High)
00256 0256 4B dc.b 75 ;X Resolution (Low)
00257 0257
00257 0257 00 dc.b $00 ;Y Resolution (High)
00258 0258 4B dc.b 75 ;Y Resolution (Low)
00259 0259 ;
00259 0259 ; We will use the corner as
00259 0259 ; Our Upper Left Possition.
00259 0259 ; This is at coordinate 0,0
00259 0259 ;
00259 0259 00 dc.b $00 ;Upper Left X (High)
0025A 025A 00 dc.b $00 ;Upper Left X (Mid High)
0025B 025B 00 dc.b $00 ;Upper Left X (Mid Low)
0025C 025C 00 dc.b $00 ;Upper Left X (Low)
0025D 025D
0025D 025D 00 dc.b $00 ;Upper Left Y (High)
0025E 025E 00 dc.b $00 ;Upper Left Y (Mid High)
0025F 025F 00 dc.b $00 ;Upper Left Y (Mid Low)
00260 0260 00 dc.b $00 ;Upper Left Y (Low)
00261 0261 ;
00261 0261 ; Width is defined as the number
00261 0261 ; of 1/1200-inch increments on
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 10
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
00261 0261 ; the horizontal axis; must be on
00261 0261 ; a byte boundry for both the
00261 0261 ; start and end points. We will
00261 0261 ; set for 4 Inches and drop the
00261 0261 ; extra.
00261 0261 ;
00261 0261 00 dc.b $00 ;Width (High)
00262 0262 00 dc.b $00 ;Width (Mid High)
00263 0263 12 dc.b 4*1200/256 ;Width (Mid Low)
00264 0264 C0 dc.b 4*1200 ;Width (Low)
00265 0265 ;
00265 0265 ; Length is defined as the number
00265 0265 ; of 1/1200-inch increments on the
00265 0265 ; vertical axis. We want ≈ 2 1/2
00265 0265 ; inches or 3072 increments
00265 0265 ;
00265 0265 00 dc.b $00 ;Length (High)
00266 0266 00 dc.b $00 ;Length (Mid High)
00267 0267 0C dc.b 3072/256 ;Length (Mid Low)
00268 0268 00 dc.b 3072 ;Length (Low)
00269 0269
00269 0269 80 dc.b $80 ;Median Brightness
0026A 026A 80 dc.b $80 ;Median Threshold
0026B 026B 80 dc.b $80 ;Median Contrast
0026C 026C
0026C 026C 01 dc.b $01 ;Image Composition (Halftone)
0026D 026D 01 dc.b $01 ;Bits per Pixel
0026E 026E
0026E 026E 00 dc.b $00 ;Halftone Mask Always $00 (High)
0026F 026F 02 dc.b $02 ;Downloaded Mask Pattern (Low)
00270 0270
00270 0270 03 dc.b $03 ;Padding Type
00271 0271 0000 dcb.b 2,$00 ;Reserved
00273 0273 00 dc.b $00 ;Compression Type (None)
00274 0274 000000000000 dcb.b 7,$00 ;Scanner Ref. is wrong. Says 5.
0027B 027B
0027B 027B ;*******************************************************
0027B 027B ;
0027B 027B ; CODE SAMPLE #5
0027B 027B ;
0027B 027B ; This code segment issues an Apple Scanner SCAN
0027B 027B ; Command by using the Apple SCSI Card Generic SCSI
0027B 027B ; call ($2B). This starts the actual scanning.
0027B 027B ;
0027B 027B ;*******************************************************
0027B 027B
0027B 027B start_scan
0027B 027B ;
0027B 027B ; Issue the Call
0027B 027B ;
0027B 027B AD 016F 0016F 4 lda scan_dnum
0027E 027E 8D FFFF 00289 4 sta dev_num5
00281 0281
00281 0281 20 00B0 000B0 6 jsr call_card
00284 0284 04 dc.b $04 ;Control Call Command Number
00285 0285 0288 dc.w cmd_list5
00287 0287 60 6 rts
00288 0288
00288 0288 ;*******************************************************
00288 0288
00288 0288 03 cmd_list5 dc.b $03 ;PCount = 3
00289 0289 00 dev_num5 dc.b $00 ;Device number
0028A 028A 028D dc.w scan_cmd ;Pointer to data
0028C 028C 2B dc.b $2B ;Control Code
0028D 028D
0028D 028D ;*******************************************************
0028D 028D
0028D 028D scan_cmd ;Our Data
0028D 028D 0018 dc.w 24 ;Total Length of Parms
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 11
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0028F 028F 000002A7 dc.l do_scan ;CDB Pointer (Long)
00293 0293 000002AD dc.l DCData5 ;DCMove Ptr (Long)
00297 0297 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
0029B 029B 00 dc.b $00 ;Reserved
0029C 029C 00 dc.b $00 ;SCSI Status
0029D 029D 00 dc.b $00 ;Command Count
0029E 029E 00000001 dc.l $00000001 ;Trans Count (Long)
002A2 02A2 00 dc.b $00 ;DMA Mode
002A3 02A3 00000000 dc.l $00000000 ;Reserved (Long)
002A7 02A7
002A7 02A7 ;*******************************************************
002A7 02A7
002A7 02A7 1B do_scan dc.b $1B ;SCAN
002A8 02A8 ;Parameters Command
002A8 02A8 000000 dcb.b 3,$00 ;Reserved
002AB 02AB 01 dc.b 1 ;Transfer Length (Low)
002AC 02AC 00 dc.b $00 ;Wait and Home Bits = 0
002AD 02AD
002AD 02AD ;*******************************************************
002AD 02AD
002AD 02AD 000002CD DCData5 dc.l window_ID ;Scanner Window Data Ptr
002B1 02B1 00000001 dc.l 1 ;Transfer Count
002B5 02B5 00000000 dc.l $00000000 ;Offset
002B9 02B9 00000000 dc.l $00000000 ;Reserved
002BD 02BD
002BD 02BD 00000000 dc.l $00000000 ;DCStop
002C1 02C1 00000000 dc.l $00000000 ;Reserved
002C5 02C5 00000000 dc.l $00000000 ;Reserved
002C9 02C9 00000000 dc.l $00000000 ;Reserved
002CD 02CD
002CD 02CD ;*******************************************************
002CD 02CD
002CD 02CD 01 window_ID dc.b $01 ;Window Identifier
002CE 02CE
002CE 02CE ;*******************************************************
002CE 02CE ;
002CE 02CE ; CODE SAMPLE #6
002CE 02CE ;
002CE 02CE ; This code segment issues a series of calls to the
002CE 02CE ; Apple Scanner by using the Apple SCSI Card Generic
002CE 02CE ; SCSI call ($2B). We first issue a GET DATA STATUS
002CE 02CE ; to see if there is enough data. Then we read in a
002CE 02CE ; single Scan Line with a READ Call. The data is then
002CE 02CE ; converted and placed in a video buffer.
002CE 02CE ;
002CE 02CE ;*******************************************************
002CE 02CE
002CE 02CE get_data
002CE 02CE 9C FFFF 00338 4 stz scan_line ;Init the scanline to 0
002D1 02D1 ;
002D1 02D1 ; Issue the Call
002D1 02D1 ;
002D1 02D1 AD 016F 0016F 4 @get_data2 lda scan_dnum
002D4 02D4 8D FFFF 00365 4 sta dev_num6
002D7 02D7 8D FFFF 0036A 4 sta dev_num65
002DA 02DA
002DA 02DA 20 00B0 000B0 6 jsr call_card
002DD 02DD 04 dc.b $04 ;Control Call Command Number
002DE 02DE 0364 dc.w cmd_list6
002E0 02E0 B0 52 00334 2 bcs @out
002E2 02E2 ;
002E2 02E2 ; Is there enough Data?
002E2 02E2 ; Enough data = 1 scan
002E2 02E2 ; line of 4 inches at 75
002E2 02E2 ; DPI or 300 pixels. At
002E2 02E2 ; 8 pixels per byte, the
002E2 02E2 ; data will be padded to
002E2 02E2 ; 38 bytes.
002E2 02E2 ;
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 12
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
002E2 02E2 AD FFFF 003FF 4 lda scan_data
002E5 02E5 D0 0C 002F3 2 bne @have_line
002E7 02E7 AD FFFF 00400 4 lda scan_data+1
002EA 02EA D0 07 002F3 2 bne @have_line
002EC 02EC AD FFFF 00401 4 lda scan_data+2
002EF 02EF C9 26 2 cmp #38 ;Decimal 38
002F1 02F1 90 DB 002CE 2 blt get_data
002F3 02F3 ;
002F3 02F3 ; We have the data. Read
002F3 02F3 ; it.
002F3 02F3 ;
002F3 02F3 20 00B0 000B0 6 @have_line jsr call_card
002F6 02F6 04 dc.b $04 ;Control Call Command Number
002F7 02F7 0369 dc.w cmd_list65
002F9 02F9 B0 39 00334 2 bcs @out
002FB 02FB ;
002FB 02FB ; Now we need to invert
002FB 02FB ; the data.
002FB 02FB ;
002FB 02FB A9 28 2 lda #40 ;40 bytes/line
002FD 02FD 8D FFFF 00339 4 sta byte_count
00300 0300 9C FFFF 0033A 4 stz byte_index
00303 0303 A9 07 2 @loop_1 lda #$07
00305 0305 8D FFFF 0033B 4 sta seven ;Pixels/byte
00308 0308 A2 24 2 @loop_2 ldx #38-2
0030A 030A 0E FFFF 00427 6 asl raw_image+37;Shift bits out the top to
0030D 030D 3E FFFF 7 @loop_3 rol raw_image,x ;the next byte 1 at a time
00310 0310 CA 2 dex
00311 0311 10 FA 0030D 2 bpl @loop_3
00313 0313 AE FFFF 0033A 4 ldx byte_index ;Shift the last bit in to
00316 0316 7E FFFF 7 ror screen,x ;this byte. This reverses the
00319 0319 CE FFFF 0033B 6 dec seven ;bit ordering. Also taking 8
0031C 031C D0 EA 00308 2 bne @loop_2 ;bits per byte down to 7
0031E 031E 5E FFFF 7 lsr screen,x
00321 0321 EE FFFF 0033A 6 inc byte_index
00324 0324 CE FFFF 00339 6 dec byte_count
00327 0327 D0 DA 00303 2 bne @loop_1
00329 0329 ;
00329 0329 ; Move data to Scan Line
00329 0329 ;
00329 0329 AE FFFF 00338 4 ldx scan_line
0032C 032C 20 FFFF 00428 6 jsr on_screen
0032F 032F EE FFFF 00338 6 inc scan_line
00332 0332 80 9D 002D1 3 bra @get_data2
00334 0334
00334 0334 A9 00 2 @out lda #$00
00336 0336 18 2 clc
00337 0337 60 6 rts
00338 0338
00338 0338 ;*******************************************************
00338 0338
00338 0338 00 scan_line dc.b $00 ;Scan Line Index
00339 0339 00 byte_count dc.b $00 ;Number of bytes left
0033A 033A 00 byte_index dc.b $00 ;Current Byte in use
0033B 033B 00 seven dc.b $00 ;Count off 7 pixels
0033C 033C 000000000000 screen dcb.b 40,0 ;Place to do the screen
00364 0364
00364 0364 ;*******************************************************
00364 0364
00364 0364 03 cmd_list6 dc.b $03 ;PCount = 3
00365 0365 00 dev_num6 dc.b $00 ;Device number
00366 0366 036E dc.w gd_status ;Pointer to data
00368 0368 2B dc.b $2B ;Control Code
00369 0369
00369 0369 03 cmd_list65 dc.b $03 ;PCount = 3
0036A 036A 00 dev_num65 dc.b $00 ;Device number
0036B 036B 0388 dc.w read ;Pointer to data
0036D 036D 2B dc.b $2B ;Control Code
0036E 036E
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 13
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0036E 036E ;*******************************************************
0036E 036E
0036E 036E gd_status ;Our Data
0036E 036E 0018 dc.w 24 ;Total Length of Parms
00370 0370 000003A2 dc.l get_stat ;CDB Pointer (Long)
00374 0374 000003B6 dc.l DCData6 ;DCMove Ptr (Long)
00378 0378 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
0037C 037C 00 dc.b $00 ;Reserved
0037D 037D 00 dc.b $00 ;SCSI Status
0037E 037E 00 dc.b $00 ;Command Count
0037F 037F 0000000C dc.l $0000000C ;Trans Count (Long)
00383 0383 00 dc.b $00 ;DMA Mode
00384 0384 00000000 dc.l $00000000 ;Reserved (Long)
00388 0388
00388 0388 read ;Our Data
00388 0388 0018 dc.w 24 ;Total Length of Parms
0038A 038A 000003AC dc.l get_data2 ;CDB Pointer (Long)
0038E 038E 000003D6 dc.l DCData65 ;DCMove Ptr (Long)
00392 0392 00000000 dc.l $00000000 ;Rqst Sense Ptr (Long)
00396 0396 00 dc.b $00 ;Reserved
00397 0397 00 dc.b $00 ;SCSI Status
00398 0398 00 dc.b $00 ;Command Count
00399 0399 00000026 dc.l $00000026 ;Trans Count (Long)
0039D 039D 00 dc.b $00 ;DMA Mode
0039E 039E 00000000 dc.l $00000000 ;Reserved (Long)
003A2 03A2
003A2 03A2 ;*******************************************************
003A2 03A2
003A2 03A2 34 get_stat dc.b $34 ;GET DATA STATUS
003A3 03A3 ;Parameters Command
003A3 03A3 000000000000 dcb.b 7,$00 ;Reserved
003AA 03AA 0C dc.b 12 ;Transfer Length (Low)
003AB 03AB 00 dc.b $00 ;Wait and Home Bits = 0
003AC 03AC
003AC 03AC 28 get_data2 dc.b $28 ;READ
003AD 03AD ;Parameters Command
003AD 03AD 00000000 dcb.b 4,$00 ;Reserved
003B1 03B1 01 dc.b $01 ;Window ID
003B2 03B2 00 dc.b $00 ;Transfer Length (High)
003B3 03B3 00 dc.b $00 ;Transfer Length (Mid)
003B4 03B4 26 dc.b $26 ;Transfer Length (Low)
003B5 03B5 00 dc.b $00 ;Wait and Home Bits = 0
003B6 03B6
003B6 03B6 ;*******************************************************
003B6 03B6
003B6 03B6 000003F6 DCData6 dc.l data_cnt ;Data Pointer
003BA 03BA 0000000C dc.l 12 ;Transfer Count
003BE 03BE 00000000 dc.l $00000000 ;Offset
003C2 03C2 00000000 dc.l $00000000 ;Reserved
003C6 03C6
003C6 03C6 00000000 dc.l $00000000 ;DCStop
003CA 03CA 00000000 dc.l $00000000 ;Reserved
003CE 03CE 00000000 dc.l $00000000 ;Reserved
003D2 03D2 00000000 dc.l $00000000 ;Reserved
003D6 03D6
003D6 03D6 00000402 DCData65 dc.l raw_image ;Data Pointer
003DA 03DA 00000026 dc.l 38 ;Transfer Count
003DE 03DE 00000000 dc.l $00000000 ;Offset
003E2 03E2 00000000 dc.l $00000000 ;Reserved
003E6 03E6
003E6 03E6 00000000 dc.l $00000000 ;DCStop
003EA 03EA 00000000 dc.l $00000000 ;Reserved
003EE 03EE 00000000 dc.l $00000000 ;Reserved
003F2 03F2 00000000 dc.l $00000000 ;Reserved
003F6 03F6
003F6 03F6 ;*******************************************************
003F6 03F6
003F6 03F6 data_cnt ;Data Space
003F6 03F6 0000 dcb.b 2,$00 ;Reserved
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 14
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
003F8 03F8 00 dc.b $00 ;Data Length
003F9 03F9 00 dc.b $00 ;Block
003FA 03FA 00 dc.b $00 ;Window Identifier
003FB 03FB 00000000 dcb.b 4,$00 ;Reserved
003FF 03FF 00 scan_data dc.b $00 ;Scan Data (High)
00400 0400 00 dc.b $00 ;Scan Data (Mid)
00401 0401 00 dc.b $00 ;Scan Data (Low)
00402 0402
00402 0402 000000000000 raw_image dcb.b 38,$00 ;Scanned Data Image
00428 0428
00428 0428 ;*******************************************************
00428 0428
00428 0428 BD FFFF 4 on_screen lda scan_tbl_lo,x
0042B 042B 85 42 3 sta <$42
0042D 042D BD FFFF 4 lda scan_tbl_hi,x
00430 0430 85 43 3 sta <$43
00432 0432 A2 27 2 ldx #40-1
00434 0434 A0 27 2 ldy #40-1
00436 0436 BD 033C 4 @loop lda screen,x
00439 0439 49 7F 2 eor #$7f
0043B 043B 91 42 6 sta ($42),y
0043D 043D CA 2 dex
0043E 043E 88 2 dey
0043F 043F 10 F5 00436 2 bpl @loop
00441 0441
00441 0441 18 2 clc
00442 0442 60 6 rts
00443 0443
00443 0443 000000000000 scan_tbl_lo dcb.b 8,$00 ;Lines 0-7
0044B 044B 808080808080 dcb.b 8,$80 ;Lines 8-15
00453 0453 000000000000 dcb.b 8,$00 ;Lines 16-23
0045B 045B 808080808080 dcb.b 8,$80 ;Lines 24-31
00463 0463 000000000000 dcb.b 8,$00 ;Lines 32-39
0046B 046B 808080808080 dcb.b 8,$80 ;Lines 40-47
00473 0473 000000000000 dcb.b 8,$00 ;Lines 48-55
0047B 047B 808080808080 dcb.b 8,$80 ;Lines 56-63
00483 0483
00483 0483 282828282828 dcb.b 8,$28 ;Lines 64-71
0048B 048B A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 72-79
00493 0493 282828282828 dcb.b 8,$28 ;Lines 80-87
0049B 049B A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 88-95
004A3 04A3 282828282828 dcb.b 8,$28 ;Lines 96-103
004AB 04AB A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 104-111
004B3 04B3 282828282828 dcb.b 8,$28 ;Lines 112-119
004BB 04BB A8A8A8A8A8A8 dcb.b 8,$a8 ;Lines 120-127
004C3 04C3
004C3 04C3 505050505050 dcb.b 8,$50 ;Lines 128-135
004CB 04CB D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 136-143
004D3 04D3 505050505050 dcb.b 8,$50 ;Lines 144-151
004DB 04DB D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 152-159
004E3 04E3 505050505050 dcb.b 8,$50 ;Lines 160-167
004EB 04EB D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 168-175
004F3 04F3 505050505050 dcb.b 8,$50 ;Lines 176-183
004FB 04FB D0D0D0D0D0D0 dcb.b 8,$d0 ;Lines 184-191
00503 0503
00503 0503 2024282C3034 scan_tbl_hi dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
0050B 050B 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00513 0513 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
0051B 051B 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
00523 0523 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
0052B 052B 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
00533 0533 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
0053B 053B 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00543 0543
00543 0543 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
0054B 054B 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00553 0553 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
0055B 055B 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
00563 0563 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 15
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0056B 056B 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
00573 0573 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
0057B 057B 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
00583 0583
00583 0583 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
0058B 058B 2024282C3034 dc.b $20,$24,$28,$2c,$30,$34,$38,$3c
00593 0593 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
0059B 059B 2125292D3135 dc.b $21,$25,$29,$2d,$31,$35,$39,$3d
005A3 05A3 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005AB 05AB 22262A2E3236 dc.b $22,$26,$2a,$2e,$32,$36,$3a,$3e
005B3 05B3 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
005BB 05BB 23272B2F3337 dc.b $23,$27,$2b,$2f,$33,$37,$3b,$3f
005C3 05C3
005C3 05C3 ;*******************************************************
005C3 05C3 ;
005C3 05C3 ; CODE SAMPLE #7
005C3 05C3 ;
005C3 05C3 ; This code segment toggles the HiRes Soft switches so
005C3 05C3 ; that we can see what was just scanned.
005C3 05C3 ;
005C3 05C3 ;*******************************************************
005C3 05C3
005C3 05C3 display
005C3 05C3 ;
005C3 05C3 ; Save the Current State
005C3 05C3 ;
005C3 05C3 AD C01A 4 lda RDTEXT
005C6 05C6 8D FFFF 00630 4 sta @text ;Text/Graphics
005C9 05C9
005C9 05C9 AD C01B 4 lda RDMIX
005CC 05CC 8D FFFF 00631 4 sta @mixed ;Mixed?
005CF 05CF
005CF 05CF AD C01C 4 lda RDPAGE2
005D2 05D2 8D FFFF 00632 4 sta @page ;Page 1 or 2
005D5 05D5
005D5 05D5 AD C01D 4 lda RDHIRES
005D8 05D8 8D FFFF 00633 4 sta @hires ;HiRes Mode?
005DB 05DB
005DB 05DB AD C018 4 lda RD80COL
005DE 05DE 8D FFFF 00634 4 sta @80col ;80-Column Mode?
005E1 05E1
005E1 05E1 AD C00C 4 lda CLR80VID ;40-Column Mode.
005E4 05E4 AD C050 4 lda TXTCLR ;Standard Apple II Graphics
005E7 05E7 AD C052 4 lda MIXCLR ;Clear Mixed Mode
005EA 05EA AD C054 4 lda TXTPAGE1 ;Page 1
005ED 05ED AD C057 4 lda HIRES ;HiRes Mode
005F0 05F0 AD C05E 4 lda CLRAN3 ;Clear annunciator 3
005F3 05F3
005F3 05F3
005F3 05F3 8D C010 4 sta KBD_STRB ;Clear Key Strobe
005F6 05F6 AD C000 4 @key_loop lda KBD ;Get key
005F9 05F9 10 FB 005F6 2 bpl @key_loop ;Wait for Key Press
005FB 05FB 8D C010 4 sta KBD_STRB ;Clear Key Strobe
005FE 05FE C9 9B 2 cmp #ESC ;ESC Key
00600 0600 18 2 clc
00601 0601 D0 04 00607 2 bne @chk_txt
00603 0603 38 2 sec ;Exit on ESC
00604 0604
00604 0604 AD C05F 4 lda SETAN3 ;Set annunciator 3
00607 0607
00607 0607 AD FFFF 00630 4 @chk_txt lda @text
0060A 060A 10 03 0060F 2 bpl @chk_mix
0060C 060C 8D C051 4 sta TXTSET ;Text on
0060F 060F
0060F 060F AD FFFF 00631 4 @chk_mix lda @mixed
00612 0612 10 03 00617 2 bpl @chk_page
00614 0614 8D C053 4 sta MIXSET ;Mixed on
00617 0617
00617 0617 AD FFFF 00632 4 @chk_page lda @page
MPW IIGS Assembler - Ver 1.1b1 06-Nov-90 Page 16
Copyright Apple Computer, Inc. 1987-1990
Loc SLoc Object Code Addr T M Source Statement
0061A 061A 10 03 0061F 2 bpl @chk_hires
0061C 061C 8D C055 4 sta TXTPAGE2 ;Page 2
0061F 061F
0061F 061F AD FFFF 00633 4 @chk_hires lda @hires
00622 0622 10 03 00627 2 bpl @chk_40col
00624 0624 8D C056 4 sta LORES ;HiRes Off
00627 0627
00627 0627 AD FFFF 00634 4 @chk_40col lda @80col
0062A 062A 10 03 0062F 2 bpl @rts
0062C 062C 8D C00D 4 sta SET80VID ;80-Column on.
0062F 062F
0062F 062F 60 6 @rts rts
00630 0630
00630 0630 00 @text dc.b $00
00631 0631 00 @mixed dc.b $00
00632 0632 00 @page dc.b $00
00633 0633 00 @hires dc.b $00
00634 0634 00 @80col dc.b $00
00635 0635
00635 0635 ;*******************************************************
00635 0635
00635 0635 ENDP
END
Elapsed time: 4.05 seconds.
Assembly complete - no errors found. 1026 lines.